L'espressione SQL CASE esamina le condizioni e restituisce un valore quando la prima condizione viene soddisfatta (ad esempio, un'istruzione if-then-else). Pertanto, non appena la condizione viene soddisfatta, l'istruzione interromperà la lettura e restituirà il risultato. Se non viene soddisfatta alcuna condizione, viene restituito il valore nella clausola ELSE.
Se non è presente alcuna parte di ELSE e le condizioni non sono soddisfatte, viene restituito NULL.
SELECT column1, column2, ...
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END
Quello che segue è un esempio della tabella "OrderDetails" del database "Northwind":
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
La seguente istruzione SQL controlla le condizioni e restituisce un valore quando viene soddisfatta la prima condizione:
Run SQLSELECT OrderID, Quantity,
CASE
WHEN Quantity > 30 THEN 'The quantity is greater than 30'
WHEN Quantity = 30 THEN 'The quantity is 30'
ELSE 'The quantity is under 30'
END AS QuantityText
FROM OrderDetails
Questa query SQL ordina i clienti per città (City). Tuttavia, se la città è NULL, ordina per paese (Country):
Run SQLSELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END)